package com.vpclub.config;

import com.vpclub.bean.Person;
import com.vpclub.filter.MyTypeFilter;
import org.springframework.context.annotation.*;

/**
 * @author : leimingchao
 * @Description:
 * @date Date : 2021年06月12日 14:18
 * 配置类  == 配置文件
 */

// @ComponentScan value：指定要扫描的包 excludeFilters = Filter[]:指定扫描的时候按照什么规则排除哪些组件
//includeFilters = Filter[]:指定扫描的时候只需要包含哪些组件
// @ComponentScan(value = "com.vpclub",includeFilters = {
//         @ComponentScan.Filter(type = FilterType.ANNOTATION,classes = {
//                 Controller.class
//         })
// },useDefaultFilters = false)
//重复注解
// @ComponentScan
@ComponentScans(value = {
        @ComponentScan(value = "com.vpclub",includeFilters = {
                // @ComponentScan.Filter(type = FilterType.ANNOTATION,classes = {
                //         Controller.class
                // }),
                // @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE,classes = {
                //         BookService.class
                // }),
                @ComponentScan.Filter(type = FilterType.CUSTOM,classes = {
                        MyTypeFilter.class
                })
        },useDefaultFilters = false)
})
// FilterType.ANNOTATION:按照注解
// FilterType.ASSIGNABLE_TYPE:按照给定的类型
// FilterType.ASPECTJ:使用ASPECTJ表达式
// FilterType.REGEX:使用正则表达式
// FilterType.CUSTOM:使用自定义规则

/**
 *告诉Spring这是一个配置类
 */
@Configuration
public class MainConfig {

    /**
     * 给容器中注册一个Bean,类型为返回值的类型，id默认是用方法名作为id
     * @return
     */
    @Bean(value = "person")
    public Person person01() {
        return new Person("lisi",20);
    }
}
